const sftpUpload = require('webpack-sftp-auto-upload')
const path = require('path');
const version = 'v1.0.8';
const timestamp = new Date().getTime();
const options = {
    title: `${process.env.VUE_APP_PROJECT_NAME}`,
    host: '42.192.90.164',
    port: '22',
    username: 'root',
    password: 'lc168!@#',
    localPath: path.join(__dirname, '.', process.env.VUE_APP_PROJECT_DIR),
    path: `/data/www/front/${process.env.VUE_APP_PROJECT_DIR}`
}
module.exports = {
    // 公共路径(必须有的)
    publicPath: "./",
    // 输出文件目录
    // outputDir: process.env.VUE_APP_PROJECT_DIR,
    //css
    css: {
        extract: { // 打包后css文件名称添加时间戳
            filename: `assets/${version}/css/[name]${timestamp}.css`,
            chunkFilename: `assets/${version}/css/[name]${timestamp}.css`
        }
    },
    // 静态资源存放的文件夹(相对于ouputDir)
    assetsDir: `assets/${version}`,
    // eslint-loader 是否在保存的时候检查(果断不用，这玩意儿我都没装)
    lintOnSave: false,
    // 我用的only，打包后小些
    runtimeCompiler: false,
    productionSourceMap: false, // 不需要生产环境的设置false可以减小dist文件大小，加速构建
    devServer: {
        open: true,  // npm run serve后自动打开页面
        host: '0.0.0.0',  // 匹配本机IP地址(默认是0.0.0.0)
        port: 8080, // 开发服务器运行端口号
    },
    chainWebpack: (config) => {
        //设置图片压缩
        // const imagesRule = config.module.rule('images')
        // imagesRule
        //     .use('image-webpack-loader')
        //     .loader('image-webpack-loader')
        //     .options({
        //         bypassOnDebug: true
        //     })
        //     .end()

        // 设置网站标题
        config.plugin('html').tap((data) => {

            data[0].title = `${process.env.VUE_APP_PROJECT_NAME}`

            return data
        })

        // 设置自动打包上传
        if (process.env.VUE_APP_AUTO_UPLOAD_AFTER_BUILD === 'true') {

            config.plugin('auto_upload').use(sftpUpload, [options])
        }

    },
    configureWebpack: (config) => {
        // 删除console
        config.optimization.minimizer[0].options.terserOptions.compress.drop_console = process.env.NODE_ENV === 'production'
        // 对代码进行切割，减少打包体积
        config.optimization.splitChunks = {

            cacheGroups: {

                'vendor': {
                    name: 'vendor',
                    test: /[\\/]node_modules[\\/]/,
                    priority: -20
                }
            }
        }
    }
}
